const translation = {
  common: {
    undo: '復原',
    redo: '重做',
    editing: '編輯中',
    autoSaved: '自動保存',
    unpublished: '未發佈',
    published: '已發佈',
    publish: '發佈',
    update: '更新',
    run: '測試運行',
    running: '運行中',
    inRunMode: '在運行模式中',
    inPreview: '預覽中',
    inPreviewMode: '預覽中',
    preview: '預覽',
    viewRunHistory: '查看運行歷史',
    runHistory: '運行歷史',
    goBackToEdit: '返回編輯模式',
    conversationLog: '對話記錄',
    debugAndPreview: '預覽',
    restart: '重新開始',
    currentDraft: '當前草稿',
    currentDraftUnpublished: '當前草稿未發佈',
    latestPublished: '最新發佈',
    publishedAt: '發佈於',
    restore: '恢復',
    runApp: '運行',
    batchRunApp: '批量運行',
    accessAPIReference: '訪問 API',
    embedIntoSite: '嵌入網站',
    addTitle: '新增標題...',
    addDescription: '新增描述...',
    noVar: '沒有變數',
    variableNamePlaceholder: '變數名',
    searchVar: '搜索變數',
    setVarValuePlaceholder: '設置變數值',
    needConnectTip: '此節點尚未連接到其他節點',
    maxTreeDepth: '每個分支最大限制 {{depth}} 個節點',
    needAdd: '必須新增{{node}}節點',
    needOutputNode: '必須新增輸出節點',
    needAnswerNode: '必須新增直接回覆節點',
    workflowProcess: '工作流',
    notRunning: '尚未運行',
    previewPlaceholder: '在下面的框中輸入內容開始測試聊天機器人',
    effectVarConfirm: {
      title: '移除變數',
      content: '該變數在其他節點中使用。您是否仍要刪除它？',
    },
    insertVarTip: '按 \'/\' 鍵快速插入',
    processData: '資料處理',
    input: '輸入',
    output: '輸出',
    jinjaEditorPlaceholder: '輸入“/”或“{”插入變數',
    viewOnly: '只讀',
    showRunHistory: '顯示運行歷史',
    enableJinja: '開啟支持 Jinja 模板',
    learnMore: '了解更多',
    copy: '拷貝',
    duplicate: '複製',
    addBlock: '新增節點',
    pasteHere: '粘貼到這裡',
    pointerMode: '指針模式',
    handMode: '手模式',
    model: '模型',
    workflowAsTool: '發佈為工具',
    configureRequired: '需要進行配置',
    configure: '配置',
    manageInTools: '訪問工具頁',
    workflowAsToolTip: '工作流更新後需要重新配置工具參數',
    viewDetailInTracingPanel: '查看詳細信息',
    importDSL: '導入 DSL',
    backupCurrentDraft: 'Backup Current Draft',
    overwriteAndImport: '覆蓋和導入',
    importSuccess: '導入成功',
    chooseDSL: '選擇 DSL（yml）檔',
    syncingData: '同步資料，只需幾秒鐘。',
    importDSLTip: '當前草稿將被覆蓋。在導入之前將工作流匯出為備份。',
    importFailure: '匯入失敗',
    parallelTip: {
      click: {
        title: '點擊',
        desc: '新增',
      },
      drag: {
        title: '拖動',
        desc: '連接',
      },
      limit: '並行度僅限於 {{num}} 個分支。',
      depthLimit: '並行嵌套層限制為 {{num}} 個層',
    },
    disconnect: '斷開',
    jumpToNode: '跳轉到此節點',
    addParallelNode: '新增並行節點',
    parallel: '並行',
    branch: '分支',
    fileUploadTip: '圖片上傳功能已升級為檔上傳。',
    ImageUploadLegacyTip: '現在，您可以在起始表單中創建檔案類型變數。我們將來不再支持圖片上傳功能。',
    importWarning: '謹慎',
    importWarningDetails: 'DSL 版本差異可能會影響某些功能',
    openInExplore: '在“探索”中打開',
    onFailure: '失敗時',
    addFailureBranch: '新增 Fail Branch',
    loadMore: '載入更多工作流',
    noHistory: '無歷史記錄',
    publishUpdate: '發布更新',
    exportSVG: '匯出為 SVG',
    exportPNG: '匯出為 PNG',
    versionHistory: '版本歷史',
    exitVersions: '退出版本',
    exportImage: '匯出圖像',
    exportJPEG: '匯出為 JPEG',
    tagBound: '使用此標籤的應用程式數量',
    currentView: '當前檢視',
    currentWorkflow: '當前工作流程',
    moreActions: '更多動作',
    listening: '聆聽',
    chooseStartNodeToRun: '選擇要執行的起始節點',
    runAllTriggers: '執行所有觸發器',
    features: '功能',
    featuresDescription: '提升網頁應用程式的使用者體驗',
    featuresDocLink: '了解更多',
    needStartNode: '至少必須新增一個起始節點',
    workflowAsToolDisabledHint: '發布最新的工作流程，並確保在將其配置為工具之前有一個已連接的使用者輸入節點。',
  },
  publishLimit: {
    startNodeTitlePrefix: '升級以',
    startNodeTitleSuffix: '解鎖無限開始節點',
    startNodeDesc: '目前方案最多允許 2 個開始節點，升級後才能發布此工作流程。',
  },
  env: {
    envPanelTitle: '環境變數',
    envDescription: '環境變數可用於存儲私人信息和憑證。它們是唯讀的，並且可以在導出時與 DSL 文件分開。',
    envPanelButton: '新增變數',
    modal: {
      title: '新增環境變數',
      editTitle: '編輯環境變數',
      type: '類型',
      name: '名稱',
      namePlaceholder: '環境名稱',
      value: '值',
      valuePlaceholder: '環境值',
      secretTip: '用於定義敏感信息或資料，DSL 設置配置為防止洩露。',
      description: '描述',
      descriptionPlaceholder: '描述此變數',
    },
    export: {
      title: '導出機密環境變數？',
      checkbox: '導出機密值',
      ignore: '導出 DSL',
      export: '導出帶有機密值的 DSL',
    },
  },
  globalVar: {
    title: '系統變數',
    description: '系統變數是全域變數，在類型符合時可由任意節點在無需連線的情況下引用，例如終端使用者 ID 與工作流程 ID。',
    fieldsDescription: {
      conversationId: '對話 ID',
      dialogCount: '對話次數',
      userId: '使用者 ID',
      triggerTimestamp: '應用程式開始運行的時間戳',
      appId: '應用程式 ID',
      workflowId: '工作流程 ID',
      workflowRunId: '工作流程執行 ID',
    },
  },
  chatVariable: {
    panelTitle: '對話變數',
    panelDescription: '對話變數用於儲存 LLM 需要記住的互動資訊，包括對話歷史、上傳的檔案、使用者偏好等。這些變數可讀寫。',
    docLink: '查看我們的文件以了解更多。',
    button: '新增變數',
    modal: {
      title: '新增對話變數',
      editTitle: '編輯對話變數',
      name: '名稱',
      namePlaceholder: '變數名稱',
      type: '類型',
      value: '預設值',
      valuePlaceholder: '預設值，留空則不設定',
      description: '描述',
      descriptionPlaceholder: '描述此變數',
      editInJSON: '以 JSON 編輯',
      oneByOne: '逐一新增',
      editInForm: '在表單中編輯',
      arrayValue: '值',
      addArrayValue: '新增值',
      objectKey: '鍵',
      objectType: '類型',
      objectValue: '預設值',
    },
    storedContent: '已儲存內容',
    updatedAt: '更新於 ',
  },
  changeHistory: {
    title: '變更履歷',
    placeholder: '尚未更改任何內容',
    clearHistory: '清除歷史記錄',
    hint: '提示',
    hintText: '您的編輯操作將被跟踪並存儲在您的設備上，直到您離開編輯器。此歷史記錄將在您離開編輯器時被清除。',
    stepBackward_one: '{{count}} 步後退',
    stepBackward_other: '{{count}} 步後退',
    stepForward_one: '{{count}} 步前進',
    stepForward_other: '{{count}} 步前進',
    sessionStart: '會話開始',
    currentState: '當前狀態',
    nodeTitleChange: '區塊標題已更改',
    nodeDescriptionChange: '區塊描述已更改',
    nodeDragStop: '區塊已移動',
    nodeChange: '區塊已更改',
    nodeConnect: '區塊已連接',
    nodePaste: '區塊已粘貼',
    nodeDelete: '區塊已刪除',
    nodeAdd: '區塊已新增',
    nodeResize: '區塊已調整大小',
    noteAdd: '註釋已新增',
    noteChange: '註釋已更改',
    edgeDelete: '區塊已斷開連接',
    noteDelete: '註釋已刪除',
  },
  errorMsg: {
    fieldRequired: '{{field}} 不能為空',
    authRequired: '請先授權',
    invalidJson: '{{field}} 是非法的 JSON',
    fields: {
      variable: '變數名',
      variableValue: '變數值',
      code: '程式碼',
      model: '模型',
      rerankModel: 'Rerank 模型',
      visionVariable: 'Vision Variable',
    },
    invalidVariable: '無效的變數',
    rerankModelRequired: '在開啟 Rerank 模型之前，請在設置中確認模型配置成功。',
    toolParameterRequired: '{{field}}：参數 [{{param}}] 為必填項',
    noValidTool: '{{field}} 未選擇有效工具',
    startNodeRequired: '請先新增一個起始節點，再執行 {{operation}}',
  },
  singleRun: {
    testRun: '測試運行',
    startRun: '開始運行',
    running: '運行中',
    testRunIteration: '測試運行迭代',
    back: '返回',
    iteration: '迭代',
    loop: '循環',
    preparingDataSource: '準備資料來源',
    reRun: '重新運行',
  },
  tabs: {
    'searchBlock': '搜索節點',
    'blocks': '節點',
    'tools': '工具',
    'searchTrigger': '搜尋觸發器...',
    'allTriggers': '所有觸發器',
    'allTool': '全部',
    'customTool': '自定義',
    'workflowTool': '工作流',
    'question-understand': '問題理解',
    'logic': '邏輯',
    'transform': '轉換',
    'utilities': '工具',
    'noResult': '未找到匹配項',
    'searchTool': '搜索工具',
    'agent': '代理策略',
    'plugin': '插件',
    'allAdded': '所有已新增的',
    'addAll': '全部新增',
    'sources': '來源',
    'searchDataSource': '搜尋資料來源',
    'noFeaturedPlugins': '前往 Marketplace 查看更多工具',
    'noFeaturedTriggers': '前往 Marketplace 查看更多觸發器',
    'start': '開始',
    'noPluginsFound': '未找到任何插件',
    'requestToCommunity': '對社群的請求',
    'featuredTools': '精選',
    'showMoreFeatured': '顯示更多',
    'showLessFeatured': '顯示較少',
    'installed': '已安裝',
    'pluginByAuthor': '由 {{author}}',
    'usePlugin': '選取工具',
    'hideActions': '隱藏工具',
    'startDisabledTip': '觸發節點與使用者輸入節點是互斥的。',
  },
  blocks: {
    'start': '開始',
    'end': '輸出',
    'answer': '直接回覆',
    'llm': 'LLM',
    'knowledge-retrieval': '知識檢索',
    'question-classifier': '問題分類器',
    'if-else': '條件分支',
    'code': '程式碼執行',
    'template-transform': '模板轉換',
    'http-request': 'HTTP 請求',
    'variable-assigner': '變數聚合器',
    'variable-aggregator': '變數聚合器',
    'assigner': '變數分配器',
    'iteration-start': '迭代開始',
    'iteration': '迭代',
    'parameter-extractor': '參數提取器',
    'list-operator': '清單運算子',
    'document-extractor': '文件提取器',
    'agent': '代理',
    'loop-start': '循環開始',
    'loop': '循環',
    'loop-end': '退出循環',
    'knowledge-index': '知識庫',
    'datasource': '資料來源',
    'originalStartNode': '原始起始節點',
    'trigger-schedule': '排程觸發',
    'trigger-webhook': 'Webhook 觸發',
    'trigger-plugin': '插件觸發器',
  },
  blocksAbout: {
    'start': '定義一個 workflow 流程啟動的參數',
    'end': '定義一個 workflow 流程的輸出和結果類型',
    'answer': '定義一個聊天對話的回覆內容',
    'llm': '調用大語言模型回答問題或者對自然語言進行處理',
    'knowledge-retrieval': '允許你從知識庫中查詢與用戶問題相關的文本內容',
    'question-classifier': '定義用戶問題的分類條件，LLM 能夠根據分類描述定義對話的進展方式',
    'if-else': '允許你根據 if/else 條件將 workflow 拆分成兩個分支',
    'code': '執行一段 Python 或 NodeJS 程式碼實現自定義邏輯',
    'template-transform': '使用 Jinja 模板語法將資料轉換為字符串',
    'http-request': '允許通過 HTTP 協議發送服務器請求',
    'variable-assigner': '將多路分支的變數聚合為一個變數，以實現下游節點統一配置。',
    'assigner': '變數分配節點用於為可寫入的變數（如對話變數）分配值。',
    'variable-aggregator': '將多路分支的變數聚合為一個變數，以實現下游節點統一配置。',
    'iteration': '對列表對象執行多次步驟直至輸出所有結果。',
    'parameter-extractor': '利用 LLM 從自然語言內推理提取出結構化參數，用於後置的工具調用或 HTTP 請求。',
    'document-extractor': '用於將上傳的文件解析為 LLM 易於理解的文字內容。',
    'list-operator': '用於篩選或排序陣列內容。',
    'agent': '調用大型語言模型來回答問題或處理自然語言',
    'loop-end': '等同於「中斷」。這個節點沒有配置項目。當循環體達到這個節點時，循環終止。',
    'loop': '執行邏輯迴圈，直到滿足終止條件或達到最大迴圈次數。',
    'datasource': '資料來源 關於',
    'knowledge-index': '知識庫 關於',
    'trigger-schedule': '基於時間的工作流程觸發器，可按計劃啟動工作流程',
    'trigger-webhook': 'Webhook 觸發器接收來自第三方系統的 HTTP 推送，以自動觸發工作流程。',
    'trigger-plugin': '第三方整合觸發器，從外部平台事件啟動工作流程',
  },
  operator: {
    zoomIn: '放大',
    zoomOut: '縮小',
    zoomTo50: '縮放到 50%',
    zoomTo100: '放大到 100%',
    zoomToFit: '自適應視圖',
    alignNodes: '對齊節點',
    distributeVertical: '垂直等間距',
    alignLeft: '左對齊',
    distributeHorizontal: '水平等間距',
    vertical: '垂直',
    alignTop: '頂部對齊',
    alignCenter: '居中對齊',
    horizontal: '水平',
    selectionAlignment: '選擇對齊',
    alignRight: '右對齊',
    alignBottom: '底部對齊',
    alignMiddle: '中部對齊',
  },
  panel: {
    userInputField: '用戶輸入字段',
    changeBlock: '更改節點',
    helpLink: '查看幫助文件',
    about: '關於',
    createdBy: '作者',
    nextStep: '下一步',
    addNextStep: '新增此工作流程中的下一個節點',
    selectNextStep: '選擇下一個節點',
    runThisStep: '運行此步驟',
    checklist: '檢查清單',
    checklistTip: '發佈前確保所有問題均已解決',
    checklistResolved: '所有問題均已解決',
    organizeBlocks: '整理節點',
    change: '更改',
    optional: '(選擇性)',
    minimize: '退出全螢幕',
    maximize: '最大化畫布',
    scrollToSelectedNode: '捲動至選取的節點',
    optional_and_hidden: '（可選且隱藏）',
    goTo: '前往',
    startNode: '起始節點',
    openWorkflow: '打開工作流程',
  },
  nodes: {
    common: {
      outputVars: '輸出變數',
      insertVarTip: '插入變數',
      memory: {
        memory: '記憶',
        memoryTip: '聊天記憶設置',
        windowSize: '記憶窗口',
        conversationRoleName: '對話角色名',
        user: '用戶前綴',
        assistant: '助手前綴',
      },
      memories: {
        title: '記憶',
        tip: '聊天記憶',
        builtIn: '內置',
      },
      errorHandle: {
        none: {
          title: '沒有',
          desc: '如果發生異常且未得到處理，節點將停止運行',
        },
        defaultValue: {
          title: '預設值',
          desc: '發生錯誤時，請指定靜態輸出內容。',
          tip: '出錯時，將返回以下值。',
          inLog: 'Node 異常，按照預設值輸出。',
          output: '輸出預設值',
        },
        failBranch: {
          title: '失敗分支',
          desc: '當發生錯誤時，它會執行 exception 分支',
          customize: '轉到畫布以自定義 fail 分支邏輯。',
          inLog: 'Node 異常，將自動執行 fail 分支。節點輸出將返回錯誤類型和錯誤消息，並將其傳遞給下游。',
          customizeTip: '啟動 fail 分支後，節點引發的異常不會終止進程。相反，它將自動執行預定義的 fail 分支，允許您靈活地提供錯誤消息、報告、修復或跳過操作。',
        },
        partialSucceeded: {
          tip: '進程中有 {{num}} 個節點運行異常，請前往 tracing 查看日誌。',
        },
        title: '錯誤處理',
        tip: '異常處理策略，當節點遇到異常時觸發。',
      },
      retry: {
        retry: '重試',
        retryOnFailure: '失敗時重試',
        maxRetries: '最大重試次數',
        retryInterval: '重試間隔',
        retryTimes: '失敗時重試 {{times}} 次',
        retrying: '重試。。。',
        retrySuccessful: '重試成功',
        retryFailed: '重試失敗',
        retryFailedTimes: '{{times}} 次重試失敗',
        times: '次',
        ms: '毫秒',
        retries: '{{num}}重試',
      },
      typeSwitch: {
        input: '輸入值',
        variable: '使用變數',
      },
      inputVars: '輸入變數',
    },
    start: {
      required: '必填',
      inputField: '輸入字段',
      builtInVar: '內置變數',
      outputVars: {
        query: '用戶輸入',
        memories: {
          des: '會話歷史',
          type: '消息類型',
          content: '消息內容',
        },
        files: '文件列表',
      },
      noVarTip: '設置的輸入可在工作流程中使用',
    },
    end: {
      outputs: '輸出',
      output: {
        type: '輸出類型',
        variable: '輸出變數',
      },
      type: {
        'none': '無',
        'plain-text': '純文本',
        'structured': '結構化',
      },
    },
    answer: {
      answer: '回覆',
      outputVars: '輸出變數',
    },
    llm: {
      model: '模型',
      variables: '變數',
      context: '上下文',
      contextTooltip: '您可以導入知識庫作為上下文',
      notSetContextInPromptTip: '要啟用上下文功能，請在提示中填寫上下文變數。',
      prompt: '提示詞',
      addMessage: '新增消息',
      roleDescription: {
        system: '為對話提供高層指導',
        user: '向模型提供指令、查詢或任何基於文本的輸入',
        assistant: '基於用戶消息的模型回覆',
      },
      vision: '視覺',
      files: '文件',
      resolution: {
        name: '分辨率',
        high: '高',
        low: '低',
      },
      outputVars: {
        output: '生成內容',
        reasoning_content: '推理內容',
        usage: '模型用量信息',
      },
      singleRun: {
        variable: '變數',
      },
      sysQueryInUser: 'user message 中必須包含 sys.query',
      jsonSchema: {
        warningTips: {
          saveSchema: '請在保存結構之前完成當前欄位的編輯',
        },
        resetDefaults: '重置',
        instruction: '指示',
        apply: '申請',
        promptPlaceholder: '描述你的 JSON 架構...',
        addField: '新增字段',
        generate: '生成',
        descriptionPlaceholder: '新增描述',
        fieldNamePlaceholder: '欄位名稱',
        showAdvancedOptions: '顯示進階選項',
        import: '從 JSON 匯入',
        generatedResult: '生成的結果',
        generateJsonSchema: '生成 JSON 架構',
        promptTooltip: '將文本描述轉換成標準化的 JSON Schema 結構。',
        doc: '了解更多有關結構化輸出的資訊',
        addChildField: '新增子欄位',
        title: '結構化輸出模式',
        regenerate: '重新生成',
        stringValidations: '字串驗證',
        generationTip: '您可以使用自然語言快速創建 JSON Schema。',
        generating: '生成 JSON 架構...',
        back: '返回',
        required: '必需的',
        resultTip: '這是生成的結果。如果您不滿意，可以回去修改您的提示。',
      },
      reasoningFormat: {
        title: '啟用推理標籤分離',
        tooltip: '從 think 標籤中提取內容並將其存儲在 reasoning_content 欄位中。',
        tagged: '保持思考標籤',
        separated: '分開思考標籤',
      },
    },
    knowledgeRetrieval: {
      queryVariable: '查詢變數',
      knowledge: '知識庫',
      outputVars: {
        output: '檢索的分段',
        content: '分段內容',
        title: '分段標題',
        icon: '分段圖標',
        url: '分段鏈接',
        metadata: '其他元資料',
      },
      metadata: {
        options: {
          disabled: {
            subTitle: '不啟用元資料過濾',
            title: '禁用',
          },
          automatic: {
            title: '自動的',
            subTitle: '根據用戶查詢自動生成元資料過濾條件',
            desc: '根據查詢變數自動生成元資料過濾條件',
          },
          manual: {
            title: '手動',
            subTitle: '手動新增元資料過濾條件',
          },
        },
        panel: {
          add: '新增條件',
          datePlaceholder: '選擇一個時間...',
          search: '搜尋元資料',
          conditions: '條件',
          title: '元資料過濾條件',
          select: '選擇變數...',
          placeholder: '輸入數值',
        },
        title: '元資料過濾',
        tip: '元資料過濾是使用元資料屬性（如標籤、類別或訪問權限）來精煉和控制在系統內檢索相關信息的過程。',
      },
    },
    http: {
      inputVars: '輸入變數',
      api: 'API',
      apiPlaceholder: '輸入 URL，輸入變數時請鍵入‘/’',
      notStartWithHttp: 'API 應該以 http:// 或 https:// 開頭',
      key: '鍵',
      value: '值',
      bulkEdit: '批量編輯',
      keyValueEdit: '鍵值編輯',
      headers: 'Headers',
      params: 'Params',
      body: 'Body',
      outputVars: {
        body: '響應內容',
        statusCode: '響應狀態碼',
        headers: '響應頭列表 JSON',
        files: '文件列表',
      },
      authorization: {
        'authorization': '鑑權',
        'authorizationType': '鑑權類型',
        'no-auth': '無',
        'api-key': 'API-Key',
        'auth-type': 'API 鑑權類型',
        'basic': '基礎',
        'bearer': 'Bearer',
        'custom': '自定義',
        'api-key-title': 'API Key',
        'header': 'Header',
      },
      insertVarPlaceholder: '鍵入 \'/\' 鍵快速插入變數',
      timeout: {
        title: '超時設置',
        connectLabel: '連接超時',
        connectPlaceholder: '輸入連接超時（以秒為單位）',
        readLabel: '讀取超時',
        readPlaceholder: '輸入讀取超時（以秒為單位）',
        writeLabel: '寫入超時',
        writePlaceholder: '輸入寫入超時（以秒為單位）',
      },
      type: '類型',
      binaryFileVariable: '二進位檔變數',
      extractListPlaceholder: '輸入清單項索引，鍵入 『/』 插入變數',
      curl: {
        placeholder: '在此處粘貼 cURL 字串',
        title: '從 cURL 導入',
      },
      verifySSL: {
        title: '驗證 SSL 證書',
        warningTooltip: '不建議在生產環境中禁用SSL驗證。這僅應用於開發或測試，因為這樣會使連接容易受到中間人攻擊等安全威脅的威脅。',
      },
    },
    code: {
      inputVars: '輸入變數',
      outputVars: '輸出變數',
      advancedDependencies: '高級依賴',
      advancedDependenciesTip: '在這裡新增一些預加載需要消耗較多時間或非默認內置的依賴包',
      searchDependencies: '搜索依賴',
      syncFunctionSignature: '同步函數簽名至代碼',
    },
    templateTransform: {
      inputVars: '輸入變數',
      code: '模板程式碼',
      codeSupportTip: '只支持 Jinja2',
      outputVars: {
        output: '轉換後內容',
      },
    },
    ifElse: {
      if: 'If',
      else: 'Else',
      elseDescription: '用於定義當 if 條件不滿足時應執行的邏輯。',
      and: 'and',
      or: 'or',
      operator: '操作符',
      notSetVariable: '請先設置變數',
      comparisonOperator: {
        'contains': '包含',
        'not contains': '不包含',
        'start with': '開始是',
        'end with': '結束是',
        'is': '是',
        'is not': '不是',
        'empty': '為空',
        'not empty': '不為空',
        'null': '空',
        'not null': '不為空',
        'all of': '全部',
        'exists': '存在',
        'in': '在',
        'not in': '不在',
        'not exists': '不存在',
        'after': '之後',
        'before': '之前',
      },
      enterValue: '輸入值',
      addCondition: '新增條件',
      conditionNotSetup: '條件未設置',
      selectVariable: '選擇變數...',
      optionName: {
        image: '圖像',
        url: '網址',
        doc: '文檔',
        localUpload: '本地上傳',
        video: '視頻',
        audio: '音訊',
      },
      select: '選擇',
      addSubVariable: '子變數',
    },
    variableAssigner: {
      title: '變數賦值',
      outputType: '輸出類型',
      varNotSet: '未設置變數',
      noVarTip: '新增需要賦值的變數',
      type: {
        string: 'String',
        number: 'Number',
        object: 'Object',
        array: 'Array',
      },
      aggregationGroup: '聚合分組',
      aggregationGroupTip: '開啟該功能後，變數聚合器內可以同時聚合多組變數',
      addGroup: '新增分組',
      outputVars: {
        varDescribe: '{{groupName}}的輸出變數',
      },
      setAssignVariable: '設置賦值變數',
    },
    assigner: {
      'assignedVariable': '已分配變數',
      'writeMode': '寫入模式',
      'writeModeTip': '當已分配變數是陣列時，附加模式會新增到末尾。',
      'over-write': '覆寫',
      'append': '附加',
      'plus': '加',
      'clear': '清除',
      'setVariable': '設定變數',
      'variable': '變數',
      'operations': {
        'overwrite': '覆寫',
        '/=': '/=',
        'title': '操作',
        '*=': '*=',
        'extend': '擴展',
        '+=': '+=',
        'set': '設置',
        'over-write': '覆寫',
        '-=': '-=',
        'append': '附加',
        'clear': '清除',
        'remove-first': '移除首項',
        'remove-last': '移除末項',
      },
      'noAssignedVars': '沒有可用的已分配變數',
      'variables': '變數',
      'selectAssignedVariable': '選擇配置的變數...',
      'setParameter': '設定參數...',
      'noVarTip': '點擊「+」按鈕新增變數',
      'assignedVarsDescription': '分配的變數必須是可寫變數，例如對話變數。',
      'varNotSet': '未設置變數',
    },
    tool: {
      authorize: '授權',
      inputVars: '輸入變數',
      outputVars: {
        text: '工具生成的內容',
        files: {
          title: '工具生成的文件',
          type: '支持類型。現在只支持圖片',
          transfer_method: '傳輸方式。值為 remote_url 或 local_file',
          url: '圖片鏈接',
          upload_file_id: '上傳文件 ID',
        },
        json: '工具生成的 JSON',
      },
      insertPlaceholder2: '插入變數',
      insertPlaceholder1: '輸入或按壓',
      settings: '設定',
    },
    questionClassifiers: {
      model: '模型',
      inputVars: '輸入變數',
      outputVars: {
        className: '分類名稱',
        usage: '模型用量信息',
      },
      class: '分類',
      classNamePlaceholder: '輸入你的分類名稱',
      advancedSetting: '高級設置',
      topicName: '主題內容',
      topicPlaceholder: '在這裡輸入你的主題內容',
      addClass: '新增分類',
      instruction: '指令',
      instructionTip: '你可以輸入額外的附加指令，幫助問題分類器更好的理解如何分類',
      instructionPlaceholder: '在這裡輸入你的指令',
    },
    parameterExtractor: {
      inputVar: '輸入變數',
      outputVars: {
        isSuccess: '是否成功。成功時值為 1，失敗時值為 0。',
        errorReason: '錯誤原因',
        usage: '模型用量信息',
      },
      extractParameters: '提取參數',
      importFromTool: '從工具導入',
      addExtractParameter: '新增提取參數',
      addExtractParameterContent: {
        name: '名稱',
        namePlaceholder: '提取參數名稱',
        type: '類型',
        typePlaceholder: '提取參數類型',
        description: '描述',
        descriptionPlaceholder: '提取參數描述',
        required: '必填',
        requiredContent: '必填僅作為模型推理的參考，不用於參數輸出的強制驗證。',
      },
      extractParametersNotSet: '提取參數未設置',
      instruction: '指令',
      instructionTip: '你可以輸入額外的附加指令，幫助參數提取器理解如何提取參數',
      advancedSetting: '高級設置',
      reasoningMode: '推理模式',
      reasoningModeTip: '你可以根據模型對於 Function calling 或 Prompt 的指令響應能力選擇合適的推理模式',
    },
    iteration: {
      deleteTitle: '刪除迭代節點？',
      deleteDesc: '刪除迭代節點將刪除所有子節點',
      input: '輸入',
      output: '輸出變數',
      iteration_one: '{{count}}個迭代',
      iteration_other: '{{count}}個迭代',
      currentIteration: '當前迭代',
      ErrorMethod: {
        operationTerminated: '終止',
        removeAbnormalOutput: 'remove-abnormal-output',
        continueOnError: '出錯時繼續',
      },
      comma: ',',
      parallelMode: '並行模式',
      parallelModeEnableTitle: 'Parallel Mode 已啟用',
      MaxParallelismTitle: '最大並行度',
      parallelModeUpper: '並行模式',
      parallelPanelDesc: '在並行模式下，反覆運算中的任務支援並行執行。',
      error_one: '{{count}}錯誤',
      errorResponseMethod: '錯誤回應方法',
      parallelModeEnableDesc: '在並行模式下，反覆運算中的任務支援並行執行。您可以在右側的 properties 面板中進行配置。',
      answerNodeWarningDesc: '並行模式警告：反覆運算中的應答節點、對話變數賦值和持久讀/寫操作可能會導致異常。',
      error_other: '{{count}}錯誤',
      MaxParallelismDesc: '最大並行度用於控制在單個反覆運算中同時執行的任務數。',
      flattenOutput: '展平成輸出',
      flattenOutputDesc: '啟用時，如果所有的迭代輸出都是陣列，它們將被展平成單一陣列。禁用時，輸出將保持巢狀陣列結構。',
    },
    note: {
      editor: {
        link: '連結',
        openLink: '打開',
        medium: '中等',
        small: '小',
        invalidUrl: 'URL 無效',
        italic: '斜體的',
        bulletList: '項目符號清單',
        large: '大',
        unlink: '取消連結',
        enterUrl: '輸入網址...',
        bold: '大膽',
        showAuthor: '顯示作者',
        strikethrough: '刪除線',
        placeholder: '寫下您的筆記...',
      },
      addNote: '新增註解',
    },
    docExtractor: {
      outputVars: {
        text: '提取的文字',
      },
      learnMore: '瞭解更多資訊',
      inputVar: '輸入變數',
      supportFileTypes: '支援文件類型：{{types}}。',
    },
    listFilter: {
      outputVars: {
        last_record: '最後一條記錄',
        first_record: '第一條記錄',
        result: '篩選結果',
      },
      desc: '描述',
      asc: 'ASC 的',
      orderBy: '排序依據',
      inputVar: '輸入變數',
      filterConditionComparisonValue: 'Filter Condition 值',
      filterCondition: '篩選條件',
      limit: '前 N 名',
      selectVariableKeyPlaceholder: 'Select sub variable key（選擇子變數鍵）',
      filterConditionComparisonOperator: 'Filter Condition Comparison 運算符',
      filterConditionKey: '篩選條件鍵',
      extractsCondition: '提取第 N 項',
    },
    agent: {
      strategy: {
        label: '代理策略',
        shortLabel: '策略',
        tooltip: '不同的 Agentic 策略決定了系統如何規劃和執行多步驟工具調用',
        configureTip: '請配置 agentic 策略。',
        searchPlaceholder: '搜索代理策略',
        selectTip: '選擇代理策略',
        configureTipDesc: '配置代理策略后，該節點將自動載入剩餘的配置。該策略將影響多步驟工具推理的機制。',
      },
      pluginInstaller: {
        installing: '安裝',
        install: '安裝',
      },
      modelNotInMarketplace: {
        title: '未安裝模型',
        manageInPlugins: '在插件中管理',
        desc: '此模型是從 Local 或 GitHub 儲存庫安裝的。請在安裝後使用。',
      },
      modelNotSupport: {
        title: '不支援的型號',
        desc: '已安裝的插件版本不提供此模型。',
        descForVersionSwitch: '已安裝的插件版本不提供此模型。按兩下以切換版本。',
      },
      modelSelectorTooltips: {
        deprecated: '此模型已棄用',
      },
      outputVars: {
        files: {
          type: '支撐類型。現在僅支援鏡像',
          transfer_method: '轉移方法。值為 remote_url 或 local_file',
          title: '代理生成的檔',
          url: '圖片網址',
          upload_file_id: '上傳檔 ID',
        },
        text: '代理生成的內容',
        usage: '模型用量信息',
        json: '代理生成的 JSON',
      },
      checkList: {
        strategyNotSelected: '未選擇策略',
      },
      installPlugin: {
        title: '安裝插件',
        changelog: '更新日誌',
        cancel: '取消',
        desc: '即將安裝以下插件',
        install: '安裝',
      },
      pluginNotFoundDesc: '此插件是從 GitHub 安裝的。請前往插件 重新安裝',
      modelNotSelected: '未選擇模型',
      tools: '工具',
      strategyNotFoundDesc: '已安裝的插件版本不提供此策略。',
      pluginNotInstalledDesc: '此插件是從 GitHub 安裝的。請前往插件 重新安裝',
      strategyNotFoundDescAndSwitchVersion: '已安裝的插件版本不提供此策略。按兩下以切換版本。',
      strategyNotInstallTooltip: '{{strategy}} 未安裝',
      toolNotAuthorizedTooltip: '{{工具}}未授權',
      unsupportedStrategy: '不支援的策略',
      model: '型',
      modelNotInstallTooltip: '此模型未安裝',
      strategyNotSet: '代理策略未設置',
      toolNotInstallTooltip: '{{tool}} 未安裝',
      maxIterations: '最大反覆運算次數',
      toolbox: '工具箱',
      configureModel: '配置模型',
      learnMore: '瞭解更多資訊',
      linkToPlugin: '連結到插件',
      pluginNotInstalled: '此插件未安裝',
      notAuthorized: '未授權',
      clickToViewParameterSchema: '點擊查看參數架構',
      parameterSchema: '參數架構',
    },
    loop: {
      ErrorMethod: {
        operationTerminated: '終止',
        continueOnError: '繼續出錯',
        removeAbnormalOutput: '移除異常輸出',
      },
      loop_other: '{{count}} 循環',
      variableName: '變數名稱',
      error_one: '{{count}} 錯誤',
      loopMaxCount: '最大迴圈次數',
      input: '輸入',
      loopVariables: '循環變數',
      output: '輸出變數',
      comma: '，',
      errorResponseMethod: '錯誤回應方法',
      breakCondition: '迴圈終止條件',
      loopMaxCountError: '請輸入一個有效的最大迴圈次數，範圍為 1 到 {{maxCount}}',
      loop_one: '{{count}} 次循環',
      exitConditionTip: '循環節點至少需要一個退出條件',
      breakConditionTip: '只有在具有終止條件的循環內和對話變數中，才能引用變數。',
      totalLoopCount: '總迴圈次數：{{count}}',
      error_other: '{{count}} 錯誤',
      currentLoop: '電流迴路',
      finalLoopVariables: '最後迴圈變數',
      currentLoopCount: '當前循環次數：{{count}}',
      inputMode: '輸入模式',
      loopNode: '循環節點',
      initialLoopVariables: '初始迴圈變數',
      deleteDesc: '刪除循環節點將移除所有子節點',
      setLoopVariables: '在迴圈範圍內設置變數',
      deleteTitle: '刪除循環節點嗎？',
    },
    dataSource: {
      add: '新增資料來源',
      supportedFileFormats: '支援的檔案格式',
      supportedFileFormatsPlaceholder: '檔案副檔名， e.g. doc',
    },
    knowledgeBase: {
      chunkStructureTip: {
        learnMore: '瞭解詳情',
        title: '請選擇區塊結構',
        message: 'Dify 知識庫支援三種區塊結構：一般、親子和 Q&A。每個知識庫只能有一個結構。前一個節點的輸出必須與選取的區塊結構一致。請注意，區塊結構的選擇會影響可用的索引方法。',
      },
      chunkIsRequired: '需要區塊結構',
      aboutRetrieval: '關於檢索方法。',
      chooseChunkStructure: '選擇區塊結構',
      indexMethodIsRequired: '索引方法是必填的',
      chunkStructure: '區塊結構',
      changeChunkStructure: '變更區塊結構',
      retrievalSettingIsRequired: '需要檢索設定',
      chunksInput: '區塊',
      chunksInputTip: '知識庫節點的輸入變數是 Chunks。該變數類型是一個物件，具有特定的 JSON Schema，必須與所選的塊結構一致。',
      rerankingModelIsRequired: '需要重新排序模型',
      chunksVariableIsRequired: 'Chunks 變數是必需的',
      embeddingModelIsRequired: '需要嵌入模型',
      rerankingModelIsInvalid: '重排序模型無效',
      embeddingModelIsInvalid: '嵌入模型無效',
    },
    triggerPlugin: {
      authorized: '已授權',
      notConfigured: '未設定',
      notAuthorized: '未被授權',
      selectSubscription: '選擇訂閱',
      availableSubscriptions: '可用訂閱',
      addSubscription: '新增訂閱',
      removeSubscription: '取消訂閱',
      subscriptionRemoved: '訂閱已成功移除',
      error: '錯誤',
      configuration: '配置',
      remove: '移除',
      or: '或',
      useOAuth: '使用 OAuth',
      useApiKey: '使用 API 金鑰',
      authenticationFailed: '驗證失敗',
      authenticationSuccess: '驗證成功',
      oauthConfigFailed: 'OAuth 配置失敗',
      configureOAuthClient: '配置 OAuth 客戶端',
      oauthClientDescription: '配置 OAuth 客戶端憑證以啟用身份驗證',
      oauthClientSaved: 'OAuth 用戶端設定已成功儲存',
      configureApiKey: '配置 API 金鑰',
      apiKeyDescription: '配置 API 金鑰憑證以進行身份驗證',
      apiKeyConfigured: 'API 金鑰設定成功',
      configurationFailed: '配置失敗',
      failedToStart: '啟動驗證流程失敗',
      credentialsVerified: '憑證驗證成功',
      credentialVerificationFailed: '憑證驗證失敗',
      verifyAndContinue: '驗證並繼續',
      configureParameters: '配置參數',
      parametersDescription: '配置觸發器參數和屬性',
      configurationComplete: '配置完成',
      configurationCompleteDescription: '您的觸發器已成功配置',
      configurationCompleteMessage: '您的觸發器配置現已完成並可使用。',
      parameters: '參數',
      properties: '屬性',
      propertiesDescription: '此觸發器的額外配置屬性',
      noConfigurationRequired: '此觸發器無需額外配置。',
      subscriptionName: '訂閱名稱',
      subscriptionNameDescription: '為此觸發器訂閱輸入一個唯一名稱',
      subscriptionNamePlaceholder: '輸入訂閱名稱...',
      subscriptionNameRequired: '需要訂閱名稱',
      subscriptionRequired: '需要訂閱',
    },
    triggerSchedule: {
      title: '時間表',
      nodeTitle: '排程觸發',
      notConfigured: '未配置',
      useCronExpression: '使用 cron 表達式',
      useVisualPicker: '使用視覺選擇器',
      frequency: {
        label: '頻率',
        hourly: '每小時',
        daily: '每日',
        weekly: '每週',
        monthly: '每月',
      },
      selectFrequency: '選擇頻率',
      frequencyLabel: '頻率',
      nextExecution: '下一次執行',
      weekdays: '平日',
      time: '時間',
      cronExpression: 'Cron 表達式',
      nextExecutionTime: '下一次執行時間',
      nextExecutionTimes: '接下來的 5 次執行時間',
      startTime: '開始時間',
      executeNow: '立即執行',
      selectDateTime: '選擇日期和時間',
      hours: '小時',
      minutes: '分鐘',
      onMinute: '在一分鐘內',
      days: '天',
      lastDay: '最後一天',
      lastDayTooltip: '並非所有月份都有31天。使用「最後一天」選項來選擇每個月的最後一天。',
      mode: '時尚',
      timezone: '時區',
      visualConfig: '視覺配置',
      monthlyDay: '每月日',
      executionTime: '執行時間',
      invalidTimezone: '無效的時區',
      invalidCronExpression: '無效的 cron 表達式',
      noValidExecutionTime: '無法計算有效的執行時間',
      executionTimeCalculationError: '無法計算執行時間',
      invalidFrequency: '無效頻率',
      invalidStartTime: '開始時間無效',
      startTimeMustBeFuture: '開始時間必須是未來的時間',
      invalidTimeFormat: '時間格式無效（預期為 HH:MM AM/PM）',
      invalidWeekday: '無效的星期日：{{weekday}}',
      invalidMonthlyDay: '每月日期必須在 1 到 31 之間或為「最後一天」',
      invalidOnMinute: '分鐘必須介於 0 到 59 之間',
      invalidExecutionTime: '無效的執行時間',
      executionTimeMustBeFuture: '執行時間必須在未來',
    },
    triggerWebhook: {
      title: 'Webhook 觸發',
      nodeTitle: '🔗 網路鉤子觸發',
      configPlaceholder: 'Webhook 觸發配置將在此實施',
      webhookUrl: 'Webhook 網址',
      webhookUrlPlaceholder: '點擊生成以創建 webhook URL',
      generate: '生成',
      copy: '複製',
      test: '測試',
      urlGenerated: 'Webhook URL 已成功生成',
      urlGenerationFailed: '無法生成網絡掛鉤 URL',
      urlCopied: 'URL 已複製到剪貼簿',
      method: '方法',
      contentType: '內容類型',
      queryParameters: '查詢參數',
      headerParameters: '標頭參數',
      requestBodyParameters: '請求主體參數',
      parameterName: '變數名稱',
      varName: '變數名稱',
      varType: '類型',
      varNamePlaceholder: '輸入變數名稱...',
      required: '必填',
      addParameter: '添加',
      addHeader: '添加',
      noParameters: '未設定任何參數',
      noQueryParameters: '未配置查詢參數',
      noHeaders: '未配置標頭',
      noBodyParameters: '未配置任何正文參數',
      debugUrlTitle: '在測試運行中，請始終使用此 URL',
      debugUrlCopy: '點擊複製',
      debugUrlCopied: '已複製！',
      debugUrlPrivateAddressWarning: '此 URL 似乎是內部位址，可能會導致 webhook 請求失敗。您可以將 TRIGGER_URL 更改為公開位址。',
      errorHandling: '錯誤處理',
      errorStrategy: '錯誤處理',
      responseConfiguration: '回應',
      asyncMode: '非同步模式',
      statusCode: '狀態碼',
      responseBody: '回應正文',
      responseBodyPlaceholder: '在這裡撰寫您的回覆內容',
      headers: '標題',
      validation: {
        webhookUrlRequired: '需要 Webhook URL',
        invalidParameterType: '參數 "{{name}}" 的類型 "{{type}}" 無效',
      },
    },
  },
  tracing: {
    stopBy: '由{{user}}終止',
  },
  variableReference: {
    noAvailableVars: '無可用變數',
    noAssignedVars: '沒有可用的已分配變數',
    noVarsForOperation: '所選操作沒有可用於賦值的變數。',
    assignedVarsDescription: '分配的變數必須是可寫變數，例如',
    conversationVars: '對話變數',
  },
  versionHistory: {
    filter: {
      onlyShowNamedVersions: '僅顯示命名版本',
      onlyYours: '只有妳的',
      empty: '未找到匹配的版本歷史',
      all: '所有',
      reset: '重置過濾器',
    },
    editField: {
      releaseNotes: '發佈說明',
      titleLengthLimit: '標題不能超過 {{limit}} 個字符',
      releaseNotesLengthLimit: '發佈說明不能超過 {{limit}} 個字符',
      title: '標題',
    },
    action: {
      updateFailure: '更新版本失敗',
      restoreFailure: '無法恢復版本',
      restoreSuccess: '恢復版本',
      updateSuccess: '版本已更新',
      deleteSuccess: '版本已刪除',
      deleteFailure: '無法刪除版本',
      copyIdSuccess: 'ID 已複製到剪貼板',
    },
    nameThisVersion: '給這個版本命名',
    latest: '最新',
    currentDraft: '當前草稿',
    title: '版本',
    editVersionInfo: '編輯版本信息',
    restorationTip: '版本恢復後，當前草稿將被覆蓋。',
    deletionTip: '刪除是不可逆的，請確認。',
    releaseNotesPlaceholder: '描述發生了什麼變化',
    defaultName: '未命名版本',
    copyId: '複製ID',
  },
  debug: {
    settingsTab: '設定',
    lastRunTab: '最後一次運行',
    relationsTab: '關係',
    noData: {
      runThisNode: '運行此節點',
      description: '上次運行的結果將顯示在這裡',
    },
    variableInspect: {
      listening: {
        title: '正在監聽觸發器事件…',
        tip: '您現在可以向 HTTP {{nodeName}} 端點發送測試請求來模擬事件觸發，或將其作為即時事件除錯的回呼 URL。所有輸出都可在變數檢視器中直接查看。',
        tipPlugin: '您現在可以在 {{- pluginName}} 中建立事件，並在變數檢視器中檢視這些事件的輸出。',
        tipSchedule: '正在監聽排程觸發器事件。\n下一次排程執行時間：{{nextTriggerTime}}',
        tipFallback: '正在等待觸發器事件，輸出會顯示在此處。',
        defaultNodeName: '此觸發器',
        defaultPluginName: '此插件觸發器',
        defaultScheduleTime: '未設定',
        selectedTriggers: '已選觸發器',
        stopButton: '停止',
      },
      trigger: {
        cached: '查看快取的變數',
        stop: '停止運行',
        clear: '清晰',
        running: '快取運行狀態',
        normal: '變數檢查',
      },
      emptyLink: '了解更多',
      view: '查看日誌',
      clearAll: '重置所有',
      envNode: '環境',
      title: '變數檢查',
      clearNode: '清除快取變數',
      systemNode: '系統',
      reset: '重置為上次運行值',
      chatNode: '對話',
      edited: '編輯的',
      emptyTip: '在畫布上逐步執行節點或逐步運行節點後，您可以在變數檢視中查看節點變數的當前值。',
      resetConversationVar: '將對話變數重置為默認值',
      export: '出口',
      largeData: '大資料，唯讀預覽。匯出以檢視全部。',
      exportToolTip: '將變數匯出為檔案',
      largeDataNoExport: '大型資料 - 僅部分預覽',
    },
    relations: {
      dependencies: '依賴',
      dependents: '被依賴',
      dependenciesDescription: '此節點所依賴的其他節點',
      dependentsDescription: '依賴此節點的其他節點',
      noDependencies: '無依賴',
      noDependents: '無被依賴',
    },
    copyLastRun: '複製上一次運行',
    copyLastRunError: '未能複製上一次運行的輸入',
    noMatchingInputsFound: '在上次運行中未找到匹配的輸入',
    noLastRunFound: '沒有找到之前的運行',
    lastOutput: '最後的輸出',
    lastRunInputsCopied: '從上次運行複製的 {{count}} 個輸入',
  },
  sidebar: {
    exportWarning: '導出當前保存的版本',
    exportWarningDesc: '這將導出當前保存的工作流程版本。如果您在編輯器中有未保存的更改，請先通過使用工作流程畫布中的導出選項來保存它們。',
  },
  error: {
    startNodeRequired: '請先新增一個起始節點，再執行 {{operation}}',
    operations: {
      connectingNodes: '連接節點',
      addingNodes: '新增節點',
      modifyingWorkflow: '修改工作流程',
      updatingWorkflow: '更新工作流程',
    },
  },
  customWebhook: '自訂 Webhook',
  difyTeam: 'Dify 團隊',
  triggerStatus: {
    enabled: '觸發',
    disabled: '觸發器 • 已停用',
  },
  entryNodeStatus: {
    enabled: '開始',
    disabled: '開始 • 已停用',
  },
  onboarding: {
    title: '選擇一個起始節點開始',
    description: '不同的起始節點有不同的能力。別擔心，你之後總是可以更改它們。',
    userInputFull: '使用者輸入（原始起始節點）',
    userInputDescription: '啟動節點，允許設定使用者輸入變數，工具功能包括網頁應用程式、服務 API、MCP 伺服器和工作流程。',
    trigger: '觸發器',
    triggerDescription: '觸發器可以作為工作流程的起始節點，例如排程任務、自訂網絡掛鉤或與其他應用程式的整合。',
    back: '返回',
    learnMore: '了解更多',
    aboutStartNode: '關於起始節點。',
    escTip: {
      press: '新聞媒體',
      key: '取消',
      toDismiss: '解僱',
    },
  },
}

export default translation
